﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using smartphone.App_Code;
using System.Data;

namespace smartphone.UserControls
{
    public partial class CartFull : System.Web.UI.UserControl
    {
        private ShoppingCart cart = new ShoppingCart();
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                PopulateControl();
            }
        }

        private void PopulateControl()
        {
            DataTable table = cart.GetItems();
            if (table.Rows.Count == 0)
            {
                titleLabel.Text = "Giỏ hàng của bạn hiện đang trống";
                GVFullCart.Visible = false;
                updateButton.Enabled = false;
                totalAmountLabel.Text = String.Format("{0:0,000}", 0);
                //khong cho hien nut "thanh toan"
                checkoutButton.Visible = false;
            }
            else
            {
                titleLabel.Text = "Giỏ hàng của bạn";
                checkoutButton.Visible = true;
                GVFullCart.DataSource = table;
                GVFullCart.DataBind();
                GVFullCart.Visible = true;
                updateButton.Enabled = true;
                //lay so tien can tra 
                decimal total = cart.GetTotalAmount();
                totalAmountLabel.Text = String.Format("{0:0,000}", total);
            }
        }

        protected void GVFullCart_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            //lay ma san pham bi xoa
            string id = GVFullCart.DataKeys[e.RowIndex].Value.ToString();
            //xoa san pham khoi gio hang
            bool success = cart.RemoveItem(id);

            //cap nhat thong thin
            statusLabel.Text = success ? "Xóa khỏi giỏ hàng thành công" : "Xóa không thành công";
            GVFullCart.EditIndex = -1;
            PopulateControl();
        }

        protected void updateButton_Click(object sender, EventArgs e)
        {
            //so luong row trong gridview
            int numRow = GVFullCart.Rows.Count;

            //tham chieu den textbox chua so luong moi
            TextBox quantityTextbox;

            //tham chieu den row thuoc gridview de cap nhat thong tin ve so luong tren tuong row
            GridViewRow gridviewRow;

            //chua ma san pham dang duoc sua
            string productID;

            //so luong moi
            int quantity;

            //thanh cong hay khong
            bool success = true;

            for (int i = 0; i < numRow; i++)
            {
                //lay gridviewrow dang duoc doc
                gridviewRow = GVFullCart.Rows[i];
                //lay id cua san pham trong gridviewrow hien tai
                productID = GVFullCart.DataKeys[i].Value.ToString();
                //lay textbox de doc so luong san pham moi
                quantityTextbox = (TextBox)gridviewRow.FindControl("editQuantity");

                //lay gia tri so luong moi, khong quang Exception neu nguoi dung co nhap cai gi khong phai la so
                if (Int32.TryParse(quantityTextbox.Text, out quantity))
                {
                    success = success && cart.UpdateItem(productID, quantity);
                }
                else
                {
                    success = false;
                }

                statusLabel.Text = success ? "Cập nhật giỏ hàng thành công" : "Cập nhật giỏ hàng không thành công";
            }
            PopulateControl();
        }

        protected void checkoutButton_Click(object sender, EventArgs e)
        {
            decimal amount = cart.GetTotalAmount();
            string orderID = cart.CreateOrder();
            string orderName = ESmartConfig.SiteName + " đơn hàng số " + orderID;

            string destination = LinkClass.ToPayPalCheckout(orderName, amount);
            Response.Redirect(destination);
        }
    }
}